home *** CD-ROM | disk | FTP | other *** search
- COMMENT^
-
- But du programme : affichage permanent de l'heure à l'ecran.
- ------------------
-
- Une fois le programme mis en memoire (96 octets !!!) : il y reste !!! :)
- La couleur d'affichage ainsi que la position a l'ecran est parametrable.
-
- Pour toute remarque/commentaire essayez : 0032-02/374-66-57 (demandez Michel)
- ou mon E-mail (internet) : mderie@is1.vub.ac.be ... CU SOON ON IRC (#Pendu Sam_) ...
-
- Pour recompiler : ml /AT time37!.asm
-
- Attention : une fois en memoire, le programme se suicide apres s'etre recopie
- dans le segment d'environnement (dont il change la taille) !!!
-
- Valeur par defaut des differents parametres :
- ^
-
- Couleur EQU 1Fh ; Blanc sur fond bleu
- VideoBaseAdr EQU 0B800h ; attention pour les cartes hercule : 0B000h !!!
- Ligne EQU 1 ; de 1 a 25 ...
- Colonne EQU 73 ; de 1 a 80 ... rappel : huit caracteres a afficher
- Separateur EQU 3Ah ; ':'
-
- Time SEGMENT
- ORG 100h ; c'est un .com
- ASSUME CS:Time,DS:Time
-
- Start: JMP Init ; Classique !
-
- NewInt1C PROC
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
- PUSH ES
- PUSH DI
-
- CLD ; on affiche par addr video croissante (cnf CST)
- MOV AX,VideoBaseAdr ; Cst.
- MOV ES,AX
- MOV DI,(Ligne-1)*160+(Colonne-1)*2 ; adr video !!!
-
- MOV AH,2
- INT 1Ah ; get RTC value (HH-MM-SS in BCD !!!)
- MOV BX,CX ; CX = compteurs
-
- MOV AL,BH ; heures
- MOV AH,Couleur ; attention reste pendant tout le programme !
- MOV CL,4 ; attention : il est utilise 3 fois !!!
- SHR AL,CL ; clear lower nibble
- OR AL,30h
- STOSW
- MOV AL,BH
- AND AL,0Fh ; conserve lower nibble
- OR AL,30h
- STOSW
-
- MOV AL,Separateur
- STOSW
-
- MOV AL,BL ; minutes
- SHR AL,CL
- OR AL,30h
- STOSW
- MOV AL,BL
- AND AL,0Fh
- OR AL,30h
- STOSW
-
- MOV AL,Separateur
- STOSW
-
- MOV AL,DH ; secondes
- SHR AL,CL
- OR AL,30h
- STOSW
- MOV AL,DH
- AND AL,0Fh
- OR AL,30h
- STOSW
-
- POP DI
- POP ES
- POP DX
- POP CX
- POP BX
- POP AX
-
- DB 0EAh ; opcode d'un jump far,direction l'ancien gestionnaire
- Int1COfs DW ?
- Int1CSeg DW ?
-
- NewInt1C ENDP
-
- ; hey DOS , cut here !!!
-
- Init: CLI ; foutez moi la paix ...
-
- MOV AX,351Ch
- INT 21h ; get int 1C vector (timer)
- MOV Int1COfs,BX
- MOV Int1CSeg,ES
-
- MOV AH,9
- MOV DX,OFFSET Copyright
- INT 21h ; qui a code ce truc ? 8-)
-
- PUSH CS
- POP ES
-
- MOV ES,WORD PTR ES:[2Ch]
- MOV BX,6
- MOV AH,4Ah
- INT 21h ; changer la taille du block d'envir !!! (96 octets)
-
- MOV SI,NewInt1C
- XOR DI,DI
- MOV CX,84 ; taille de la routine ( <> 96 !!! il faut un multiple de 16)
- CLD
- REP MOVSB
-
- MOV SI,ES
- MOV DI,SI ;sauvegarde
- DEC SI
- MOV ES,SI; ES=ES-1
-
- MOV WORD PTR ES:[1],0FFFFh ; changer le owner du MCB !!!
-
- XOR DX,DX
- MOV DS,DI
- MOV AX,251Ch
- INT 21h ; detourner le timer
-
- STI ; heheh
-
- MOV AX,4C00h
- INT 21h ; fin du prg !!!
-
- Copyright DB 13,10,'Time! 3.7 - Coded By Sam In 1994 - A TFL/TDV Production - 96 Bytes In Memory !',13,10,'$'
-
- Time ENDS
- END Start
-